import java.io.File

fun main() {
    // 指定需要修改文件名的目录
    val directoryPath = "D:\\Code\\intellij\\intellij-gitcode\\src\\main\\kotlin\\com\\linqingying\\gitcode"

    // 指定原前缀和新前缀
    val oldPrefix = "Github"   // 旧的文件名前缀
    val newPrefix = "GitCode"   // 新的文件名前缀

    // 调用批量替换前缀的函数
    replaceFilePrefix(directoryPath, oldPrefix, newPrefix)
}

/**
 * 批量替换文件名前缀
 * @param directoryPath 文件目录路径
 * @param oldPrefix 原前缀
 * @param newPrefix 新前缀
 */
fun replaceFilePrefix(directoryPath: String, oldPrefix: String, newPrefix: String) {
    val directory = File(directoryPath)

    // 检查路径是否存在并且是目录
    if (!directory.exists() || !directory.isDirectory) {
        println("目录不存在或不是一个有效的目录: $directoryPath")
        return
    }

    // 遍历目录及其子目录中的所有文件
    directory.walk().forEach { file ->
        if (file.isFile) { // 仅对文件进行操作
            val parentPath = file.parent
            val originalName = file.name

            // 检查是否包含旧前缀
            if (originalName.startsWith(oldPrefix)) {
                // 替换前缀
                val newName = originalName.replaceFirst(oldPrefix, newPrefix)
                val newFilePath = "$parentPath/$newName"

                val newFile = File(newFilePath)

                // 重命名文件
                if (file.renameTo(newFile)) {
                    println("成功重命名: $originalName -> $newName")
                } else {
                    println("重命名失败: $originalName")
                }
            }
        }
    }
}
